JAX London: Some people seem to believe that Node.js might have a chance at overtaking Java in the near future. Can Java really be dethroned? Why/why not?
Markus Eisele: The one thing that the JavaScript revolution clearly shows is that our world will continue to be polyglot and diverse. Going forward, we won’t have the luxury of just learning a single language and relying on platforms and industry standards to be the default when it comes to application development.
Java as a language still has the advantage of being broadly known and taught. Another part is also shifting very quickly: centralized infrastructures are dying and full stack Java applications with server-side rendering are following quickly. The number one language for front-ends is JavaScript these days. There’s also Go in cloud environments and container-land. This list will expand while Java will keep its dominance for a little longer.
JAX London: This year, Stanford’s famous introductory course for programming dropped Java in favor of JavaScript. What does this say about the relevance and popularity of Java?
Markus Eisele: With Java being the number one programming language in the enterprise, it leads to a vibrant ecosystem of tools, standards and methodologies. It isn’t the most concise or most beautiful language, but it can be scaled to large teams and we learned to ensure a decent quality.
To me, it is a natural progression and doesn’t necessarily tell a story about relevance or popularity of Java.
The front-end development has mostly switched to JavaScript already and I think that the visual parts of applications have always been the entry point into programming. To me, it is a natural progression and doesn’t necessarily tell a story about relevance or popularity of Java. More about its usability and learning curve.
JAX London: What did you think of the fact that Java 9 was delayed to September? Do you agree with the JCP Executive Committee’s decision to vote against JSR 376? Why or why not?
Markus Eisele: I didn’t expect it to come out at all this year. The EC made very clear that the advantages for a modularized JDK have a clear focus, and that is the JVM itself. It puts a big burden on framework developers and will most likely have a big influence on the way we implement applications going forward. And even if one could argue that a bad module system is better than none, I do believe that without the changes and clarifications pushed for by the EC, nobody would have used Java 9 at all. Besides Oracle.
JAX London: Georges Saab, chairperson of the OpenJDK governing board and vice president of development for the Java Platform group at Oracle told us in early June that many developers will probably get started on JDK 9 without modules. How do you feel about the modular ecosystem?
Markus Eisele: This is exactly what is going to happen. You won’t use something that has no advantage and only drawbacks. The possibility to switch off the module system will at least keep companies on latest versions with hopefully patched and secure JVMs. Imagine what would have happened if Oracle EOLs Java 8 updates and nobody is using Java 9.
It isn’t the most concise or most beautiful language, but it can be scaled to large teams and we learned to ensure a decent quality.
I personally believe that the modularization efforts come too late and provide too little value to developers. On the other hand, we might see more specialized JVMs for smaller and/or specialized devices. There might be optimized versions for containers. Let’s all keep our fingers crossed that a lot of the knowledge will also end up in OpenJDK and not only lead to Oracle products.
JAX London: What is the most important misconception about Java 9? How about Jigsaw?
Markus Eisele: I have two favorites. One is the inclusion of the Reactive Streams specification. I’ve seen the first blog posts about how to use it in your own applications. It shouldn’t be used directly but together with a reference implementation, for example, Akka Streams . Here is one of the better blog posts that I know, giving an introduction to it.
The second one is Jigsaw or better the Java Platform Module System. There are many aspects that will cause a lot of confusion at best and a module hell at worst. Stephen Colebourne published three good articles about it that try to clear a little of the confusion. He talks about Modul Naming, Automatic Modules and how Modules aren’t artefacts
JAX London: What would you like to see in Java 10?
Markus Eisele: Developer productivity would be my biggest interest. Further, improve Lambdas, better streams support in all APIs (e.g. JDBC), and there are a couple of interesting draft JEPs that I would like to see.